#ifndef DW_GRAPHICS_SHADER_H
# define DW_GRAPHICS_SHADER_H

#include "system/resource.h"

namespace dw
{
	namespace graphics
	{

		/// Interface for shader management
		class IShader : public system::IResource
		{
		// Enums
		public:

			enum Type { VERTEX_SHADER, FRAGMENT_SHADER };

		// Methods
		public:

			virtual void load(std::istream& is) = 0;

			virtual void unload() = 0;

			virtual void compile() = 0;

		};

		/// Abstract class
		class Shader : public IShader
		{
		// Constructors
		protected:

			Shader(const Type type);

			virtual ~Shader();

		// Fields
		public:

			Type _type;

		};

	} // namespace graphics
} // namespace dw

#endif // !DW_GRAPHICS_SHADER_H
